#include <stdio.h>

// 定义TIME的结构和位掩码
#define MASK_HOUR 0x1F        // 0001 1111
#define MASK_MINUTE 0x7FF     // 0111 1111 1111
#define MASK_SECOND 0x7FFF    // 0111 1111 1111 1111
#define SHIFT_HOUR 0
#define SHIFT_MINUTE 5
#define SHIFT_SECOND 11

unsigned int TIME = 0;  // 假设TIME已经通过之前的函数设置好了

void setHour(int h) {
    TIME &= ~(MASK_HOUR << SHIFT_HOUR);
    TIME |= (h & MASK_HOUR) << SHIFT_HOUR;
}

void setMinute(int m) {
    TIME &= ~(MASK_MINUTE << SHIFT_MINUTE);
    TIME |= (m & MASK_MINUTE) << SHIFT_MINUTE;
}

void setSecond(int s) {
    TIME &= ~(MASK_SECOND << SHIFT_SECOND);
    TIME |= (s & MASK_SECOND) << SHIFT_SECOND;
}

// 读取小时的函数
int getHour() {
    return (TIME >> SHIFT_HOUR) & MASK_HOUR;
}

// 读取分钟的函数
int getMinute() {
    return (TIME >> SHIFT_MINUTE) & MASK_MINUTE;
}

// 读取秒的函数
int getSecond() {
    return (TIME >> SHIFT_SECOND) & MASK_SECOND;
}

int main() {
    // 假设TIME已经被设置，现在读取并打印时间
    int hour = getHour();
    int minute = getMinute();
    int second = getSecond();

    printf("Current time is: %02d:%02d:%02d\n", hour, minute, second);

    return 0;
}

